package com.link.base.base.invloc.service;

import com.link.base.base.accnt.model.Account;
import com.link.base.base.invloc.model.Invloc;
import com.link.core.basic.service.BasicService;

import java.util.List;

/**
 * @author: liushoulong
 * created: 2018/5/8
 * comments:
 */
public interface InvlocService extends BasicService<Invloc> {

    /***
     * 通过客户id查询仓库
     * @param param
     * @return
     * @throws Exception
     */
    public List<Invloc> queryByAcctId(Invloc param) throws Exception;

    /**
     * 根据客户信息添加仓库
     * @param account
     * @return Invloc
     * @throws Exception
     */
    Invloc insertByAccount(Account account) throws Exception;

    /**
     * 虚拟仓库是否存在，存在则用虚拟仓库，反之创建虚拟仓库
     * @param account
     * @return Invloc
     * @throws Exception
     */
    Invloc getInvloc(Account account) throws Exception;

    /**
     * 获取虚拟仓库，如果虚拟仓库不存在，则创建虚拟仓库
     * @author 何启谦
     * @return 仓库
     * @throws Exception 查询异常
     *
     */
    Invloc getFictitiousInvloc() throws Exception;

    /**
     * 获取客户的仓库，如果该客户没有仓库，则创建仓库并返回
     * @author 何启谦
     * @param accountId 客户ID
     * @return 仓库
     * @throws Exception 查询异常
     */
    Invloc getAccountInvloc(Long accountId) throws Exception;

    /**
     * 获取客户的仓库，如果该客户没有仓库，则创建仓库并返回
     * @author 何启谦
     * @param account 客户
     * @return 仓库
     * @throws Exception 查询异常
     */
    Invloc getAccountInvloc(Account account) throws Exception;
}
